package com.whccb.apps.office.document;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.actionsoft.apps.listener.PluginListener;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.apps.resource.plugin.profile.AWSPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.AppExtensionProfile;
import com.actionsoft.apps.resource.plugin.profile.AtFormulaPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.FormUIPluginProfile;
import com.whccb.apps.office.document.at.DocCheckAt;
import com.whccb.apps.office.document.at.DocDWLimits;
import com.whccb.apps.office.document.at.GetKmsLat;
import com.whccb.apps.office.document.at.GetOfficeDocumentTypeInfoByUidAndLikeName;
import com.whccb.apps.office.document.at.GetOfficeDocumentTypeSqlByUserid;
import com.whccb.apps.office.document.at.GetReceivePermSql;
import com.whccb.apps.office.document.at.GetTxwjKmsCardName;
import com.whccb.apps.office.document.at.GetTxwjKmsLatParam;
import com.whccb.apps.office.document.formatter.ODNotificationFormatter;
import com.whccb.apps.office.document.ui.ShortTextFieldUI;

public class Plugins implements PluginListener {

    public Plugins() {

    }

    public List<AWSPluginProfile> register(AppContext context) {
        List<AWSPluginProfile> list = new ArrayList<AWSPluginProfile>();
        list.add(new FormUIPluginProfile("威商扩展组件", "WSYH.ShortNumber",
                ShortTextFieldUI.class.getName(), "短数字", "", true, true, true,
                false, true, true, true, true, true));

        // list.add(new FormUIPluginProfile("威商扩展组件", "WSYH.UserGroup",
        // UserGroupUI.class.getName(), "群组", "", true, false, false,
        // false, false, true, true, true, false));

        list.add(new AtFormulaPluginProfile("根据用户帐号查找可用的公文文种",
                "@getOfficeDocumentTypeSqlByUserid(*uid)",
                GetOfficeDocumentTypeSqlByUserid.class.getName(),
                "根据用户帐号查找可用的公文文种", "根据用户帐号查找可用的公文文种"));

        list.add(new AtFormulaPluginProfile(
                "根据用户帐号（精确匹配权限）及文种名称(模糊匹配)查询符合条件的文种，只会返回一个文种信息字段",
                "@getOfficeDocumentTypeInfoByUidAndLikeName(*uid,*likeTypeName,*field)",
                GetOfficeDocumentTypeInfoByUidAndLikeName.class.getName(),
                "根据用户帐号（精确匹配权限）及文种名称(模糊匹配)查询符合条件的文种，只会返回一个文种信息字段",
                "根据用户帐号（精确匹配权限）及文种名称(模糊匹配)查询符合条件的文种，只会返回一个文种信息字段"));
        list.add(new AtFormulaPluginProfile("查询归档KMS的纬度ID",
                "@getKmsLat(year,*kmsMemo)", GetKmsLat.class.getName(),
                "根据年度(2016/2017...)和KMS纬度的描述信息查询KMS的纬度ID，需要预先在KMS纬度的描述字段设置对应的关联关系",
                "根据年度(2016/2017...)和KMS纬度的描述信息查询KMS的纬度ID，需要预先在KMS纬度的描述字段设置对应的关联关系"));

        list.add(new AtFormulaPluginProfile("获得体系文件归档知识库的卡片名称（格式：<制度分类>制度名称）",
                "@getTxwjKmsCardName(*bindid)",
                GetTxwjKmsCardName.class.getName(),
                "获得体系文件归档知识库的卡片名称（格式：<制度分类>制度名称）",
                "获得体系文件归档知识库的卡片名称（格式：<制度分类>制度名称）"));

        list.add(new AtFormulaPluginProfile("该公式只限于体系文件归档知识库使用，目的是为了获得合适的参数",
                "@getTxwjKmsLatParam(*bindid,prefix)",
                GetTxwjKmsLatParam.class.getName(),
                "该公式只限于体系文件归档知识库使用，目的是为了获得合适的参数",
                "该公式只限于体系文件归档知识库使用，目的是为了获得合适的参数"));

        list.add(new AtFormulaPluginProfile("公文视图权限at公式",
                "@DocDWLimits(*boname,*field,rolename,uid)",
                DocDWLimits.class.getName(),
                "公文视图权限,boname,视图BO表名,field,过滤字段名,uid,指定用户,rolename,中文角色名,可看本单位下各部门记录角色",
                "公文视图权限,boname,视图BO表名,field,过滤字段名,uid,指定用户,rolename,中文角色名,可看本单位下各部门记录角色"));
        // 注册应用扩展点-通知
        Map<String, Object> params2 = new HashMap<String, Object>();
        params2.put("systemName", ODConstant.NOTIFY_SYSNAME);
        params2.put("icon", "");
        params2.put("formatter", ODNotificationFormatter.class.getName());
        list.add(new AppExtensionProfile(ODConstant.NOTIFY_SYSNAME,
                "aslp://com.actionsoft.apps.notification/registerApp",
                params2));

        list.add(new AtFormulaPluginProfile("发文收回后路由判断@公司，暂时一用后期作废",
                "@docCheckAt()", DocCheckAt.class.getName(),
                "发文收回后路由判断@公司，暂时一用后期作废", "发文收回后路由判断@公司，暂时一用后期作废"));
        list.add(new AtFormulaPluginProfile("收文查询权限@公式",
                "@GetReceivePermSql(uid)", GetReceivePermSql.class.getName(),
                "收文查询权限@公式", "收文查询权限@公式"));

        return list;
    }
}
